home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 5 / QRZ Ham Radio Callsign Database - Volume 5.iso / unix / src / pcall.c < prev    next >
C/C++ Source or Header  |  1993-11-01  |  2KB  |  108 lines

  1.  
  2.  
  3. /*
  4. **    hdr.c
  5. */
  6.  
  7.  
  8. #include <stdio.h>
  9. #include <sys/types.h>
  10. #include <sys/stat.h>
  11. #include <sys/mman.h>
  12. #include <string.h>
  13. #include "cb.h"
  14.  
  15.  
  16. field_it(s,f)
  17. char *s;
  18. char *f[];
  19. {
  20.     int i;
  21.     char *p;
  22.  
  23.     if (p = strchr(s,'\n'))
  24.         *p = '\0';
  25.     i = 0;
  26.     f[i] = s;
  27.     while (*s)
  28.     {    
  29.         if (*s == DELIMITER)
  30.         {
  31.             *s++ = '\0';
  32.             f[++i] = s;
  33.         }
  34.         else
  35.             s++;
  36.     }
  37. }
  38.  
  39.  
  40. pcall(buf,printcall)
  41. char *buf;
  42. int *(printcall)();
  43. {
  44.     char *f[20];
  45.     char cbuf[256];
  46.     char datestr[16];
  47.     char effstr[16];
  48.     char formname[128];
  49.     char dispbuf[1024];
  50.     char addrbuf[128];
  51.     char pbuf[16];
  52.     char *p;
  53.     char *d;
  54.     int i;
  55.  
  56.     strcpy(cbuf,buf);
  57.     memset(f,0,sizeof(f));
  58.     field_it(cbuf,f);
  59.  
  60.     for (i=0;i<15;i++)
  61.         if ((f[i]) && (p=strchr(f[i],';')))
  62.             *p = ',';
  63.  
  64.     p = f[CALL];
  65.     for (d=p; *p; p++)
  66.         if (*p != ' ')
  67.             *d++ = *p;
  68.     *d = '\0';
  69.  
  70.     if (f[JR][0])
  71.         if (strlen(f[MI]))
  72.             sprintf(formname, "%s %s. %s %s",
  73.                 f[FNAME], f[MI], f[LNAME], f[JR]);
  74.         else
  75.             sprintf(formname, "%s %s %s",
  76.                 f[FNAME], f[LNAME], f[JR]);
  77.     else
  78.         if (strlen(f[MI]))
  79.             sprintf(formname, "%s %s. %s",
  80.                 f[FNAME], f[MI], f[LNAME]);
  81.         else
  82.             sprintf(formname, "%s %s",
  83.                 f[FNAME], f[LNAME]);
  84.  
  85.     sprintf(addrbuf, "%s, %s %s", f[MAIL_CITY], f[MAIL_ST], f[MAIL_ZIP]);
  86.  
  87.     jultodate(f[DOB],datestr);
  88.     jultodate(f[EFDATE],effstr);
  89.  
  90.     sprintf(dispbuf, "\
  91. %-8s%-40s Class: %s  %s\n\
  92.     %-40s Born:     %s\n\
  93.     %-40s",
  94.     f[CALL], formname, f[CLASS], effstr,
  95.     f[MAIL_STR], datestr, addrbuf);
  96.  
  97.     if (strlen(f[P_CALL])) {
  98.         sprintf(pbuf," Prev:  %s  %-6s\n\n",
  99.             strlen(f[P_CLASS])?f[P_CLASS]:" ",f[P_CALL]);
  100.         strcat(dispbuf,pbuf);
  101.     } else
  102.         strcat(dispbuf,"\n\n");
  103.  
  104.     printcall(dispbuf);
  105.     return ;
  106. }
  107.  
  108.